#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>

int main()
{
    printf("stdin->fd: %d\n", stdin->_fileno);
    printf("stdout->fd: %d\n", stdout->_fileno);   
    printf("stderr->fd: %d\n", stderr->_fileno);

    FILE* fp1 = fopen("log1.txt", "w");
    if(fp1 == NULL) return 1;
    printf("fp1: %d\n", fp1->_fileno);

    FILE* fp2 = fopen("log2.txt", "w");
    if(fp2 == NULL) return 1;
    printf("fp2: %d\n", fp2->_fileno);

    FILE* fp3 = fopen("log3.txt", "w");
    if(fp3 == NULL) return 1;
    printf("fp3: %d\n", fp3->_fileno);
    
    fclose(fp1);

    //fwrite("hello", 5, 1, fp);
    //fprintf(stdout, "%s\n","hello linux");

    //const char* message = "hello world\n";
    //write(1, message, strlen(message));
    
  // int fda = open("loga.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  // printf("fda: %d\n", fda);
  // 
  // int fdb= open("logb.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  // printf("fdb: %d\n", fdb);

  // int fdc = open("logc.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  // printf("fdc: %d\n", fdc);

  // int fdd = open("logd.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  // printf("fdd: %d\n", fdd);

   // umask(0);
   // int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
   // if(fd < 0)
   // {
   //     printf("open");
   //     return 1;
   // }
   // 
   // //const char* message = "xxxxx";
   // const char* message = "hello world\n";
   // write(fd, message, strlen(message));

   // close(fd);

    return 0;
}





//#define ONE   1     // 0000 0001
//#define TWO   (1<<1)// 0000 0010
//#define THREE (1<<2)// 0000 0100
//#define FOUR  (1<<3)// 0000 1000
//
//void print(int flag)
//{
//    if(flag&ONE)
//        printf("one\n");
//
//    if(flag&TWO)
//        printf("two\n");
//
//    if(flag&THREE)
//        printf("three\n");
//
//    if(flag&FOUR)
//        printf("four\n");
//}
//
//int main()
//{
//    print(ONE);
//    printf("\n");
//
//    print(TWO);
//    printf("\n");
//    
//    print(ONE|TWO);
//    printf("\n");
//
//    print(ONE|TWO|THREE);
//    printf("\n");
//
//    return 0;
//}
//


